gameenginefandomcom-20200222-history
Engine FAQ
This FAQ sheet originates from a post by /u/fuzzylumpkinsclassic.(originally posted by /u/fuzzylumpkinsclassic) That said - thank you! Introduction One of the most common questions asked by aspiring game developers is the question "What game engine should I use." It's not an easy question to answer, even for developers who have been playing at game development for awhile. This FAQ aims to provide enough information to allow inquiring devs to make an intelligent, informed decision as to what tools are right for them, or, at least to provide enough information to start on their search and allow them to ask more specific questions. What is a game engine? An engine is a complete package: a comprehensive set of tools to help you build a game from scratch. Engines typically contain some kind of level/scene editor, tools for importing and managing game assets (models, textures, sounds, sprites, etc.), an animation system, and a scripting language or API to program the game's logic. You'll still need to write code to use an engine, but you'll only need to concentrate on game logic; the system-level heavy lifting has already been done for you.(thanks to AmazingThew for answering this question) What is a game framework? A framework is much lighter weight than an engine. Frameworks exist to abstract away the lowest-level programming details, and allow a developer to make interactive graphics programs easily. Typically, a framework will handle creating the OS-level window in which the game will run (this is surprisingly complicated), provide a straightforward, platform-independent way to draw things in that window (whether 2D sprites or proper OpenGL/DirectX code), provide access to the state of various input devices (keyboard, mouse, joystick, etc.), and provide a system for handling sound. Everything else you need to code yourself. This has advantages and disadvantages. A framework is much less than an engine, but it means you are free to build any architecture you desire, rather than working within the constraints of any pre-existing engine's design. So...why do I need one of these? Strictly speaking, you don't need to use any of these sorts of tools at all, however the road to building a game without any of them is long, arduous, and filled with peril. Many developers who have found themselves asking this same question find themselves falling into what's sometimes referred to as the "engine trap," that is, they spend all their time trying to recreate the functionality found in these sorts of tools, and fail to ever actually develop the game that they started out trying to make. If your end goal is to build a game, it is almost always a better choice to do so with the aid of some sort of third party tools. So do I need a Framework, or an Engine? This depends on your background and goals. Generally speaking, if your motivation is "I want to make a game," you should choose an engine. An engine will get the messy architecture bits out of your way and let you immediately focus on art, design, and gameplay. However, if your goal is "I want to learn to program games," you're probably better off using a framework, as you'll be able to make your own decisions about how to build things, and you'll come away with a much stronger understanding of how games are really built. Additionally, it's possible to design a game such that no engine will be well-suited to build it. Fez and Minecraft, for example, would likely have been much more work to build in Unity than to write from scratch on top of a framework due to how uniquely they approach gameplay, and how their assets are handled. Also, if you want modern fancy graphics (like Xbox 360 or better), use an engine. You'll go completely mad trying to reimplement all that stuff yourself unless you know exactly what you're doing. Sources Category:Articles with incomplete sections